#include <iostream>
#include <future>
#include <unistd.h>

int Add(int x, int y)
{
    std::cout << "into Add" << std::endl;
    return x + y;
}


int main()
{
    // std::launch::async 是一个异步操作策略：内部创建一个线程执行函数，函数运行结果通过 future 获取
    // std::launch::deferred 是一个同步操作策略：获取结果时，再执行函数

    // std::future<int> task = std::async(std::launch::async, Add, 11, 22);
    std::future<int> task = std::async(std::launch::deferred, Add, 11, 22);
    sleep(1);
    std::cout << "-----------------" << std::endl;

    std::cout << task.get() << std::endl;

    return 0;
}